package com.um2.simplexe.serveur.ui.entryPoint;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;

import com.um2.simplexe.serveur.ui.exec.Methodes;
import com.um2.simplexe.serveur.ui.util.controleUI.chargeur.menu.ControleurDeMenu;
import com.um2.simplexe.serveur.ui.util.controleUI.chargeur.menu.ControleurDePanneaux;

public class PanneauConfigurationPlugins extends JPanel{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	public static boolean dejasUnOuvert = false ;
	private static PanneauConfigurationPlugins InstanceUnique;
	private static JButton quit = null ;

	
	private PanneauConfigurationPlugins(final Methodes ensembleDeFonctions) {
		super() ;
		
		this.setLayout(new BorderLayout()) ;
		JPanel panneauHaut = new JPanel(new FlowLayout()) ;
		add(panneauHaut,BorderLayout.NORTH) ;
		
		panneauHaut.add(new JLabel("Configuration des plugins")) ;
		
		Box panneauMilieu = Box.createVerticalBox() ;
		
		
		
		JScrollPane scroll = new JScrollPane(panneauMilieu) ;
		
		
		
//		
		JPanel ligne1 = new JPanel(new GridLayout(0,1)) ;
//		JPanel ligne1 = new JPanel(new FlowLayout()) ;
	
		int nombreDeLignes = 0 ;
		////////////////////////////////
		// les librairies partagees ////
		////////////////////////////////
		
		nombreDeLignes++ ;
		
		JLabel texteTitre0 = new JLabel("librairies partagees : ") ;
		JPanel texteLibLabel0 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
		texteLibLabel0.add(texteTitre0);
		
		JPanel temp0 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
		temp0.add(texteLibLabel0) ;
		ligne1.add(temp0) ;
		temp0.setBackground(Color.DARK_GRAY) ;
		texteLibLabel0.setBackground(Color.DARK_GRAY) ;
		texteTitre0.setForeground(Color.WHITE) ;
		panneauMilieu.add(ligne1) ;	

		
		
		int nombre=0 ;
		if (nombre==0) {
		nombreDeLignes++ ;
		JPanel espace = new JPanel() ;
		espace.setBackground(Color.WHITE) ;
		ligne1.add(espace) ;
	}		
		for (String menu : ensembleDeFonctions.getVectorLibrairiepartagee()) {

			nombreDeLignes++ ;
			
			JCheckBox checkValiderPlugin = new JCheckBox("",true) ;
			checkValiderPlugin.setFocusable(false) ;
		
			
			JPanel temp = new JPanel(new FlowLayout(FlowLayout.RIGHT)) ;
			
			temp.add(new JLabel(menu)) ;
			temp.add(checkValiderPlugin) ;
			ligne1.add(temp) ;
		
			panneauMilieu.add(ligne1) ;	
	
		
		} // fin liste librairies partagees
			
			
			
		////////////////////////////////
		// les librairies de menus  ////
		////////////////////////////////
		
		nombreDeLignes++ ;
		
			JLabel texteTitre1 = new JLabel("plugins modificateur de menu : ") ;
			JPanel texteLibLabel1 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
			texteLibLabel1.add(texteTitre1);
			
			JPanel temp1 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
			temp1.add(texteLibLabel1) ;
			temp1.setBackground(Color.DARK_GRAY) ;
			texteLibLabel1.setBackground(Color.DARK_GRAY) ;
			texteTitre1.setForeground(Color.WHITE) ;
			ligne1.add(temp1) ;
			panneauMilieu.add(ligne1) ;	
	
	
			
			
			if (nombre==0) {
				nombreDeLignes++ ;
				JPanel espace = new JPanel() ;
				espace.setBackground(Color.WHITE) ;
				ligne1.add(espace) ;
			}
		for (ControleurDeMenu menu : ensembleDeFonctions.getVectorPluginsMenus()) {
			nombreDeLignes++ ;
			System.out.println("menus partages "+menu.getNomPlugin());
			
				JCheckBox checkValiderPlugin = new JCheckBox("",true) ;
				checkValiderPlugin.setFocusable(false) ;
				
		
				JPanel temp = new JPanel(new FlowLayout(FlowLayout.RIGHT)) ;
				

				temp.add(new JLabel(menu.getNomPlugin())) ;
				temp.add(checkValiderPlugin) ;
				ligne1.add(temp) ;
					
				panneauMilieu.add(ligne1) ;	
		
			
		} // fin liste librairies des menus

		
		
		
		///////////////////////////////////
		// les librairies de panneaux  ////
		///////////////////////////////////

		nombreDeLignes++ ;
		
		JLabel texteTitre2 = new JLabel("plugins modificateur de panneaux : ") ;
		JPanel texteLibLabel2 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
		texteLibLabel2.add(texteTitre2);
		
		JPanel temp2 = new JPanel(new FlowLayout(FlowLayout.LEFT)) ;
		temp2.add(texteLibLabel2) ;
		temp2.setBackground(Color.DARK_GRAY) ;
		texteTitre2.setForeground(Color.WHITE) ;
		texteLibLabel2.setBackground(Color.DARK_GRAY) ;
		ligne1.add(temp2) ;
		panneauMilieu.add(ligne1) ;	

		
		
		if (nombre==0) {
			nombreDeLignes++ ;
			JPanel espace = new JPanel() ;
			espace.setBackground(Color.WHITE) ;
			ligne1.add(espace) ;
		}
		for (ControleurDePanneaux panneau : ensembleDeFonctions.getVectorPluginsPanneau()) {
			nombreDeLignes++ ;
			System.out.println("panneaux partagee");
			
				JCheckBox checkValiderPlugin = new JCheckBox("",true) ;
				checkValiderPlugin.setFocusable(false) ;
		
		
				JPanel temp = new JPanel(new FlowLayout(FlowLayout.RIGHT)) ;
				

				temp.add(new JLabel(panneau.getNomPlugin())) ;
				temp.add(checkValiderPlugin) ;
				ligne1.add(temp) ;
					
				panneauMilieu.add(ligne1) ;	
		
			
		} // fin liste librairies des panneaux
		
			
	
	
	

	final JButton quitter = new JButton("quitter le panneau de configuration") ;
	
	
	ligne1.add(quitter) ;
	nombreDeLignes++ ;
	
	quitter.addActionListener(new ActionListener() {

		public void actionPerformed(ActionEvent arg0) {
			ensembleDeFonctions.retirerALaFenetre(ensembleDeFonctions.getCurrentOpenTab()) ;
			quit.setVisible(false) ;
			dejasUnOuvert = false ;
		}}) ;

	
	ligne1.setMaximumSize(new Dimension(1000,30*nombreDeLignes)) ;

	
		
		
		//// maintenant la barre de menu
		if (quit==null) {
			quit = new JButton("quitter les plugins") ;
			quit.addActionListener(new ActionListener() {

				public void actionPerformed(ActionEvent arg0) {
					ensembleDeFonctions.retirerALaFenetre(ensembleDeFonctions.getCurrentOpenTab()) ;
					quit.setVisible(false) ;
					dejasUnOuvert = false ;
				}}) ;
			
			JPanel top = ensembleDeFonctions.getHautDeFenetre() ;
			top.add(quit) ;
		}else{
			quit.setVisible(true) ;
		}
		
		this.add(scroll,BorderLayout.CENTER) ;

		
		
		dejasUnOuvert = true ;
		
	}

	
	
	

	public static JPanel getInstanceUnique(Methodes ensembleDeFonctions) {
		if (InstanceUnique==null)
			InstanceUnique = new PanneauConfigurationPlugins(ensembleDeFonctions) ;
		quit.setVisible(true) ;
		return InstanceUnique;
	}

	
	
}
